using System.Collections.Generic;
using System.Linq;
using Project.Configs;
using Project.Models.Abstractions;

namespace Project.Models
{
    public class ItemConfigsStorage : IModel
    {
        private readonly Dictionary<int, ItemConfig> _itemConfigs;

        public ItemConfigsStorage()
        {
            _itemConfigs = new Dictionary<int, ItemConfig>();
        }

        public ItemConfig this[int itemId] => _itemConfigs[itemId];

        public List<int> ItemIds => _itemConfigs.Keys.ToList();

        public bool Has(int itemId) => _itemConfigs.ContainsKey(itemId);

        public ItemConfigsStorage Add(ItemConfig itemConfig)
        {
            if (!Has(itemConfig.Id))
                _itemConfigs.Add(itemConfig.Id, itemConfig);

            return this;
        }
        public ItemConfigsStorage Add(IEnumerable<ItemConfig> itemConfigs)
        {
            foreach (var itemConfig in itemConfigs)
                Add(itemConfig);

            return this;
        }

        public ItemConfigsStorage Remove(int itemId)
        {
            _itemConfigs.Remove(itemId);

            return this;
        }
    }
}
